ClickHouse入门笔记 | 您所在的位置:网站首页 › access 创建表语句 浮点型 › ClickHouse入门笔记 |
primary key 主键(可选)
只提供了数据的一级索引,但是却不 是唯一约束。这就意味着是可以存在相同 primary key 的数据的。 主键的设定主要依据是查询语句中的 where 条件。 根据条件通过对主键进行某种形式的二分查找,能够定位到对应的 index granularity,避 免了全表扫描。 index granularity: 直接翻译的话就是索引粒度,指在稀疏索引中两个相邻索引对应数 据的间隔。ClickHouse 中的 MergeTree 默认是 8192。 稀疏索引: 稀疏索引的好处就是可以用很少的索引数据,定位更多的数据,代价就是只能定位到索 引粒度的第一行,然后再进行进行一点扫描。 order by(必选) order by 是 MergeTree 中唯一一个必填项,甚至比 primary key 还重要,因为当用户不 设置主键的情况,很多处理会依照 order by 的字段进行处理 要求:主键必须是 order by 字段的前缀字段。 比如 order by 字段是 (id,sku_id) 那么主键必须是 id 或者(id,sku_id),主键不能是sku_id 二级索引二级索引的功能在 v20.1.2.4 之前是被标注为实验性的,之后版本默认是开启的。 create table t_order_mt2( id UInt32, sku_id String, total_amount Decimal(16,2), create_time Datetime, INDEX a total_amount TYPE minmax GRANULARITY 5 #创建二级索引 ) engine =MergeTree partition by toYYYYMMDD(create_time) primary key (id) order by (id, sku_id); 数据 TTLTTL 即 Time To Live,MergeTree 提供了可以管理数据表或者列的生命周期的功能。 TTL字段不能使用主键字段 列级别 TTL create table t_order_mt3( id UInt32, sku_id String, total_amount Decimal(16,2) TTL create_time+interval 10 SECOND,#设置这个字段在createtime+10s后过期 create_time Datetime ) engine =MergeTree partition by toYYYYMMDD(create_time) primary key (id) order by (id, sku_id);表级 TTL alter table t_order_mt3 MODIFY TTL create_time + INTERVAL 10 SECOND; 涉及判断的字段必须是 Date 或者 Datetime 类型,推荐使用分区的日期字段。 能够使用的时间周期: SECOND 、MINUTE、HOUR 、DAY 、 WEEK 、 MONTH 、 QUARTER 、 YEAR |
CopyRight 2018-2019 实验室设备网 版权所有 |